#!/bin/bash
# 获取日期 日志类型
# CNT1通过网络请求(数据质量监测系统)  获取上报的指定日期指定日志类型的总行数
# CNT2通过HDFS客户端请求  获取落地到HDFS上的指定日期指定日志类型的总行数
# 判断   CNT1 < CNT2  数据采集重复  去重

# 将 T 日的日志数据行数上报到数据监控服务
DT=$(date -d '-1 days' +%Y-%m-%d)
if  [ $1 ]
then
DT=$1
fi
LOGTYPE=applog
CNT1=$(curl http://doitedu03:8080/getLogCnt  -X POST  -d"{\"logType\":\"$LOGTYPE\" ,\"dt\":\"$DT\"}" -H "Content-Type: application/json")
CNT2=$(hdfs  dfs -text /data/app_log/$DT/* | wc -l)
# 将当天的数据  映射到hive去重表中
hive  -e  "alter table   doe39.tb_distinct_app_log add  if not exists  partition (dt='$DT') location  '/data/app_log/$DT'"
# alter table doe39.tb_distinct_app_log  drop  if exists  partition(dt='2023-06-04')
if [ $CNT2 -gt $CNT1 ]
then
   echo "数据有重复  ,需要去重 , 执行去重操作!"
  hive -e  "
  set hive.exec.compress.output = true;
  set mapred.output.compression.codec = org.apache.hadoop.io.compress.GzipCodec;
  insert  overwrite  table  doe39.tb_distinct_app_log  partition (dt='$DT')
  select
      line
  from
      doe39.tb_distinct_app_log where dt = '$DT'
  group by line
  "
   echo  "去重成功... ..."
   else
    echo  "不用去重 , 玩会吧....."
fi



